<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 剩余参数:rest parameters
    function foo(num1, num2, ...otherNums) {
      console.log(arguments)
      console.log("=====rest parameters======")
      console.log(otherNums)

    }
    foo(20, 30, 111, 222, 333)

    function bar(...args) {
      console.log(args)
    }
    bar("abc", 123, "cba", 321)

    // 注意事项:剩余参数需要写到其他的参数最后
    /*
    剩余参数只包含那些没有对应形参的实参，而 arguments 对象包含了传给函数的所有实参；
    arguments对象不是一个真正的数组，而rest参数是一个真正的数组，可以进行数组的所有操作；
    arguments是早期的ECMAScript中为了方便去获取所有的参数提供的一个数据结构，而rest参数是ES6中提供并且希望以此来替代arguments的；
    */
  </script>
</body>

</html>